<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>简单测试 - 自动化测试 - DOClever 移动时代首选接口管理平台！</title>
  <meta name="description" content="现在有这样一个业务场景，我需要先登录，然后获取报名订单列表，而如果要登陆的话又必须要获取图片验证码然后把验证码输入到登陆接口的入参   ">
  <meta name="keywords" content="简单测试">
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="stylesheet" href="../style/css/layui.css"  media="all">
  <link rel="stylesheet" href="../style/style.css"  media="all">
</head>
<body>
<div id="page-container" class="help">
	<div class="curve2" style="background: url('../style/back.jpg') no-repeat scroll center center / cover border-box, rgba(0, 0, 0, 0) linear-gradient(60deg, rgb(23, 185, 230) 0%, rgb(23, 230, 126) 100%) repeat scroll 0% 0%;padding-bottom: 150px">
		<div class="layui-container">
			<ul class="layui-nav" lay-filter="" style="background: none">
			  <li class="layui-nav-item"><a href="/"><h2 style="font-size: 32px">DOClever</h2></a></li>

			</ul>
		</div>
	</div>
	<div class="layui-container bd">
		<div class="layui-tab layui-tab-brief">
			<ul class="layui-tab-title">
				<li ><a href="../../ksks/" >快速开始</a></li>
				<li ><a href="../../xxsy/" >详细使用</a></li>
				<li ><a href="../../xxbs/" >线下部署</a></li>
				<li ><a href="../../bbgx/" >版本更新</a></li>
				<li ><a href="../../changjian/" >常见问题</a></li>
				<li ><a href="../../log/" >更新日志</a></li>
			</ul>
		</div>  
	  	<div class="layui-row layui-col-space30">
		    <div class="layui-col-md3 left ">    
				<div class="layui-collapse" lay-accordion="">
															<div class="layui-colla-item">
					    <h2 class="layui-colla-title">基础</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../jichu/2.html" >注册登录</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jichu/27.html" >修改资料</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jichu/28.html" >导入项目</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jichu/29.html" >项目分类</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jichu/54.html" >总后台管理</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">接口管理</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../jkgl/30.html" >分组操作</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkgl/31.html" >创建接口</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkgl/32.html" >接口编辑</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkgl/33.html" >接口管理</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkgl/34.html" >Inject注入</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">接口调试</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../jkts/35.html" >接口测试</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkts/36.html" >一键生成</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkts/37.html" >数据效验</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkts/38.html" >内网调试</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../jkts/39.html" >Mock数据</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">全局设置</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../qjsz/40.html" >状态码</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../qjsz/41.html" >全局环境注入</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../qjsz/42.html" >文档</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../qjsz/43.html" >环境变量</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">项目设置</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../xmsz/44.html" >项目信息</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../xmsz/45.html" >邀请成员</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../xmsz/46.html" >项目导出</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../xmsz/47.html" >团队申请</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">自动化测试</h2>
					    <div class="layui-colla-content layui-show " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../test/48.html" >简单测试</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../test/49.html" >高级测试</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../test/50.html" >组合测试</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../test/51.html" >后台轮询</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">版本管理</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../bbgl/52.html" >项目版本</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../bbgl/53.html" >接口快照</a></p>
																			    </div>
					</div>
										<div class="layui-colla-item">
					    <h2 class="layui-colla-title">团队协作</h2>
					    <div class="layui-colla-content " >
					    															<p style="padding: 5px 0 5px 15px"><a href="../tdxz/56.html" >创建团队</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../tdxz/57.html" >分配项目</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../tdxz/58.html" >管理组员</a></p>
														<p style="padding: 5px 0 5px 15px"><a href="../tdxz/59.html" >团队项目</a></p>
																			    </div>
					</div>
														</div>
			</div>
			<div class="layui-col-md9 right ">
				<p><strong>这里以DOClever老的用户界面为例，新的界面也是一一对应的</strong><br />
<br />
现在有这样一个业务场景，我需要先登录，然后获取报名订单列表，而如果要登陆的话又必须要获取图片验证码然后把验证码输入到登陆接口的入参里，如果这样一个业务场景由人工手动来做的话是比较繁琐的，接口之前的信息需要来回切换，那么用 DOClever 如何来做自动化测试呢？</p>
<p>我们在DOClever里切换到测试栏目下，新建订单模块，然后新建订单列表测试业务，在订单列表下新建一个测试用例，就叫获取订单列表，如下图所示：</p>
<p><img alt="" src="https://box.kancloud.cn/9ffa69dac83b34f79214ed04118f203d_1344x451.png" /></p>
<p><img alt="" src="https://box.kancloud.cn/3e21f4777fc58b2deb69b15482835fec_577x615.png" /></p>
<p><br />
然后我们去编写这个测试用例，DOClever 的测试用例用 javascript 编写即可，js 本身还是比较简单，学习一下很快就能上手，如下图：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/ff917dc3c07d79e94ebfe7e750928ed6_640x430.png" /></p>
<p><strong>代码提取出来如下：</strong><br />
<br />
&nbsp;</p>
<pre>
<code>var <span class="hljs-attribute">a</span>=获取验证码; 
var <span class="hljs-attribute">res</span>=await a(); 
var <span class="hljs-attribute">text</span>=await input(<span class="hljs-string">&quot;aaa&quot;</span>,res.data); 
log(text); <span class="hljs-attribute">a</span>=登录; 
var <span class="hljs-attribute">res</span>=await a({ body:{ <span class="hljs-string">&quot;code&quot;</span>:text } }); 
var <span class="hljs-attribute">c</span>=报名订单列表; 
<span class="hljs-attribute">res</span>=await c(); 
log(res.data.code); 
return <span class="hljs-literal">true</span>;
</code></pre>
<p><br />
获取验证码，登陆，报名订单列表都是我们点击插入接口按钮插入的接口，插入页面如下：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/309a91ac9db0ec2acbfc329e231e2939_640x195.png" /></p>
<p><br />
上图中 baseurl 为 default；Url 代表使用默认的 baseurl 运行，否则可以选择我们想要的 baseUrl，query，header 里面如果有参数，我们可以设置参数的值，比如登陆接口的插入页面：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/bc839e18d0eed5063f32a0ac4dc2c435_640x290.png" /></p>
<p><br />
<code>var res=await a();</code></p>
<p><br />
这一行代表我们执行获取验证码的接口，因为这是一个异步接口，所以需要 es7 里面的新语法 await 来等待这个异步请求的数据返回。</p>
<p><br />
<code>var text=await input(&quot;aaa&quot;,res.data);</code></p>
<p><br />
res.data 的值就是验证码图形数据，input 函数是一个用户输入的函数，第一个参数是显示的 title，第二个参数是需要在输入框中显示给用户的内容，这里就是把返回的验证码图片展示给用户看，然后用户手动输入验证码，同时程序等待输入返回，返回值赋值给 text 变量。</p>
<p><br />
<code>log(text);</code></p>
<p><br />
log 是一个输出函数，只有一个参数，是需要输出的内容。</p>
<pre>
<code><span class="hljs-attribute">a</span>=登录;
<span class="hljs-attribute">var res</span>=await a({ body:{ <span class="hljs-string">&quot;code&quot;</span>:text } });
</code></pre>
<p>这段代码就是调用登陆接口，将 text 的内容作为登陆接口的 body 里面的 code 字段的入参，然后等待接口返回结果。</p>
<pre>
<code>var c=报名订单列表<span class="hljs-comment">; </span>
res=await c()<span class="hljs-comment">; </span>
log(res<span class="hljs-meta">.data</span><span class="hljs-meta">.code</span>)<span class="hljs-comment">; </span>
return true<span class="hljs-comment">; </span>
</code></pre>
<p>这一段代码就是调用报名订单列表，然后将返回数据中的 code 字段打印出来，return true 代表这个测试用例已通过，return false 代表未通过，return 或者没有 return 语句代表这个用例结果未判定。</p>
<p><strong>最后，不要忘记在每个语句结束的地方以分号结尾，这个非常重要！</strong> ok，我们写完后还有一件事情不要忘记了，就是设置 defaultUrl，它会作为每个接口的 baseUrl 来运行接口，我们点击这个按钮即可选择：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/e9e28761e526490583bac3997651e900_640x244.png" /></p>
<p>设置完成后，点击用例编辑页面的运行按钮，会出现下图所示：</p>
<p><img alt="" src="https://box.kancloud.cn/578aa5aec4b53824ab8bb7af1ad4092d_640x451.png" /></p>
<p><br />
这就是 input 弹出的输入框，图片展示的我们请求验证码接口返回的验证码图片，我们输入 pppx 验证码，然后点击确定，测试会自动按照流程走下去，当弹出运行完成的提示框时，我们看下输出标签页：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/113ce15aa1ecfbe8c3a628d250a1ff2c_640x431.png" /></p>
<p><br />
整个用例的详细输出信息都会完整的打印出来。 那么如果接口需要文件上传，DOClever 可不可以实现呢，答案完全是可以的，我们新建一个用例：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/2521724f5dee4b61c5d1ead227d510f1_640x198.png" /></p>
<p>然后编辑测试用例的代码：<br />
&nbsp;</p>
<pre>
<code><span class="hljs-keyword">var</span> a=上传头像; 
<span class="hljs-keyword">var</span> res=await a(); 
log(res.<span class="hljs-keyword">data</span>.<span class="hljs-keyword">data</span>); 
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>; 

</code></pre>
<p>ok，点击运行，便会弹出一个文件选择页面，如下图：</p>
<p><img alt="" src="https://box.kancloud.cn/9cda3fa7de7edff01856ae2f0220dd5f_640x202.png" /></p>
<p><br />
我们选择需要上传的图片，点击确定，等弹出运行完成提示框，我们看下输出标签页的内容显示：<br />
&nbsp;</p>
<p><img alt="" src="https://box.kancloud.cn/9e1bc1a4c5ca8c798fb4d12606e89515_640x324.png" /></p>
<p><br />
已经执行成功，同时也打印出了新上传图片的路径地址！</p>
<weel class="_on" data-api-src="baidu" data-check-aim="false" data-lang-from="en" data-lang-to="zh" id="weel__float-action-button" style="visibility: hidden; opacity: 0; transform: translate3d(-143px, -29px, 0px);"><weel id="weel__float-action-button--container"><weel id="weel__float-action-button--icon"></weel></weel></weel><weel id="weel__float-action-panel" style="visibility: hidden; opacity: 0;"><weel id="weel__float-action-panel--container"><weel id="weel__float-action-panel--output-stream"><weel id="weel__float-action-panel--output-stream-result"><weel id="weel__float-action-panel--output-stream-result-word"><weel id="weel__float-action-panel--output-stream-phonetic"><weel id="weel__float-action-panel--i-voice"></weel><weel id="weel__float-action-panel--output-stream-phonetic-plain">&nbsp;</weel></weel><weel id="weel__float-action-panel--output-stream-explain"><weel id="weel__float-action-panel--i-copy"></weel><weel id="weel__float-action-panel--output-stream-explain-plain">&nbsp;</weel><textarea></textarea><weel id="weel__float-action-panel--output-stream-explain-detail">&nbsp;</weel></weel></weel></weel></weel></weel></weel><weel data-api-src="baidu" data-check-aim="false" data-lang-from="en" data-lang-to="zh" id="weel__float-action-button" style="visibility: hidden; opacity: 0;"><weel id="weel__float-action-button--container"><weel id="weel__float-action-button--icon"></weel></weel></weel><weel id="weel__float-action-panel" style="visibility: hidden; opacity: 0;"><weel id="weel__float-action-panel--container"><weel id="weel__float-action-panel--output-stream"><weel id="weel__float-action-panel--output-stream-result"><weel id="weel__float-action-panel--output-stream-result-word"><weel id="weel__float-action-panel--output-stream-phonetic"><weel id="weel__float-action-panel--i-voice"></weel><weel id="weel__float-action-panel--output-stream-phonetic-plain">&nbsp;</weel></weel><weel id="weel__float-action-panel--output-stream-explain"><weel id="weel__float-action-panel--i-copy"></weel><weel id="weel__float-action-panel--output-stream-explain-plain">&nbsp;</weel><textarea></textarea><weel id="weel__float-action-panel--output-stream-explain-detail">&nbsp;</weel></weel></weel></weel></weel></weel></weel>			</div>
		</div>
	</div>
</div> 
<div class="footer">
	<div class="layui-container" style="text-align: center;">

		<p class="tc">©           2016-2017 合肥市胖胖羊信息科技有限责任公司 皖ICP备17002996号</p> 

	</div>  
</div>       
<script src="../style/layui.js" charset="utf-8"></script>
<!-- 注意：如果你直接复制所有代码到本地，上述js路径需要改成你本地的 -->
<script>
layui.use(['element', 'layer'], function(){
  var element = layui.element;
  var layer = layui.layer;
  
  //监听折叠
  element.on('collapse(test)', function(data){
    layer.msg('展开状态：'+ data.show);
  });
});
</script>

</body>
</html>